home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / compiz / compiz-text.h < prev   
C/C++ Source or Header  |  2009-10-15  |  5KB  |  144 lines

  1. /*
  2.  * text.h - adds text image support to beryl.
  3.  * Copyright: (C) 2006 Patrick Niklaus
  4.  *
  5.  * This program is free software; you can redistribute it and/or
  6.  * modify it under the terms of the GNU General Public License
  7.  * as published by the Free Software Foundation; either version 2
  8.  * of the License, or (at your option) any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  18.  *
  19.  */
  20.  
  21. #ifndef _COMPIZ_TEXT_H
  22. #define _COMPIZ_TEXT_H
  23.  
  24. #define TEXT_ABIVERSION 20090103
  25.  
  26. /**
  27.  * Flags to be passed into the flags field of CompTextAttrib
  28.  */
  29. #define CompTextFlagStyleBold      (1 << 0) /**< render the text in bold */
  30. #define CompTextFlagStyleItalic    (1 << 1) /**< render the text italic */
  31. #define CompTextFlagEllipsized     (1 << 2) /**< ellipsize the text if the
  32.                              specified maximum size is too
  33.                          small */
  34. #define CompTextFlagWithBackground (1 << 3) /**< render a rounded rectangle as
  35.                               background behind the text */
  36. #define CompTextFlagNoAutoBinding  (1 << 4) /**< do not automatically bind the
  37.                              rendered text pixmap to a
  38.                          texture */
  39.  
  40. /**
  41.  * Input data structure that specifies how the text is to be rendered
  42.  */
  43. typedef struct _CompTextAttrib {
  44.     char           *family;    /**< font family */
  45.     int            size;       /**< font size in points */
  46.     unsigned short color[4];   /**< font color (RGBA) */
  47.  
  48.     unsigned int   flags;      /**< rendering flags, see above */
  49.  
  50.     int            maxWidth;   /**< maximum width of the generated pixmap */
  51.     int            maxHeight;  /**< maximum height of the generated pixmap */
  52.  
  53.     int            bgHMargin;  /**< horizontal margin in pixels
  54.                     (offset of text into background) */
  55.     int            bgVMargin;  /**< vertical margin */
  56.     unsigned short bgColor[4]; /**< background color (RGBA) */
  57. } CompTextAttrib;
  58.  
  59. /**
  60.  * Output data structure that represents the rendered text
  61.  */
  62. typedef struct _CompTextData {
  63.     CompTexture  *texture; /**< texture the text pixmap is bound to */
  64.     Pixmap       pixmap;   /**< text pixmap */
  65.     unsigned int width;    /**< pixmap width */
  66.     unsigned int height;   /**< pixmap height */
  67. } CompTextData;
  68.  
  69. /**
  70.  * Prototype of text-to-pixmap rendering function
  71.  *
  72.  * @param s       screen the text is rendered on
  73.  * @param text    text to be rendered in ASCII or UTF-8 encoding
  74.  * @param attrib  text rendering attributes
  75.  *
  76.  * @return        valid text data on success, NULL on failure
  77.  */
  78. typedef CompTextData *
  79. (*RenderTextProc) (CompScreen           *s,
  80.            const char           *text,
  81.            const CompTextAttrib *attrib);
  82.  
  83. /**
  84.  * Prototype of window title-to-pixmap rendering function
  85.  *
  86.  * @param s                   screen the text is rendered on
  87.  * @param window              XID of the window whose title should be rendered
  88.  * @param withViewportNumber  also render the viewport number behind
  89.  *                            the window title
  90.  * @param attrib              text rendering attributes
  91.  *
  92.  * @return                    valid text data on success, NULL on failure
  93.  */
  94. typedef CompTextData *
  95. (*RenderWindowTitleProc) (CompScreen           *s,
  96.               Window               window,
  97.               Bool                 withViewportNumber,
  98.               const CompTextAttrib *attrib);
  99.  
  100. /**
  101.  * Prototype of function drawing text data on screen
  102.  *
  103.  * Should only be called for text data which was automatically bound
  104.  * to a texture.
  105.  * NOTE: assumes that x and y are specified in the coordinate system
  106.  *       currently used by OpenGL. For being able to specify screen
  107.  *       coordinates, the caller needs to generate a transformation matrix
  108.  *       using transformToScreenSpace and load it prior to calling this
  109.  *       function.
  110.  *
  111.  * @param s      screen the text is rendered on
  112.  * @param data   text data structure
  113.  * @param x      x position in current OpenGL coordinates
  114.  * @param y      y position in current OpenGL coordinates
  115.  * @param alpha  opacity for the drawn text (0.0 - transparent, 1.0 - opaque)
  116.  */
  117. typedef void (*DrawTextProc) (CompScreen         *s,
  118.                   const CompTextData *data,
  119.                   float              x,
  120.                   float              y,
  121.                   float              alpha);
  122.  
  123. /**
  124.  * Prototype of text data cleanup function
  125.  *
  126.  * @param s     screen the data was generated for
  127.  * @param data  data structure
  128.  */
  129. typedef void (*FiniTextDataProc) (CompScreen   *s,
  130.                   CompTextData *data);
  131.  
  132. /**
  133.  * Function pointer set that provides access to the
  134.  * above defined functions.
  135.  */
  136. typedef struct _TextFunc {
  137.     RenderTextProc        renderText;
  138.     RenderWindowTitleProc renderWindowTitle;
  139.     DrawTextProc          drawText;
  140.     FiniTextDataProc      finiTextData;
  141. } TextFunc;
  142.  
  143. #endif
  144.